/* 
 * File:   HumanCreature.h
 * Author: jcrada
 *
 * Created on December 17, 2008, 6:22 PM
 */

#ifndef _HUMANCREATURE_H
#define	_HUMANCREATURE_H

#include "Creature.h"

namespace jcrada {

    class HumanCreature : public Creature {
    public:

        enum eBody {
            B_HEAD = 0,
            B_THORAX,
            B_LUPPERARM, B_RUPPERARM,
            B_LFOREARM, B_RFOREARM,
//            B_LHAND, B_RHAND,
            B_LTHIGH, B_RTHIGH,
            B_LCALF, B_RCALF,
            B_LFOOT, B_RFOOT,
            BODY_PARTS
        };

        enum eConstraint {
            C_NECK = 0,
            C_LSHOULDER, C_RSHOULDER,
            C_LELBOW, C_RELBOW,
//            C_LWRIST, C_RWRIST,
            C_LHIP, C_RHIP,
            C_LKNEE, C_RKNEE,
            C_LANKLE, C_RANKLE,
            CONSTRAINTS
        };

    public:
        HumanCreature(int hidden_layers = 1, int neurons_per_layer = BODY_PARTS);
        virtual ~HumanCreature( );

        virtual void set( const btTransform& at = btTransform::getIdentity( ) );

    protected:
        virtual void setBodies( );
        virtual void setConstraints( );

    };
}

#endif	/* _HUMANCREATURE_H */

